<!DOCTYPE html>
<html>
<head>
<title>Nginx</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) */
/* Author: Nicolas Hery - http://nicolashery.com */
/* Version: b13fe65ca28d2e568c6ed5d7f06581183df8f2ff */
/* Source: https://github.com/nicolahery/markdownpad-github */

/* RESET
=============================================================================*/

html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
}

/* BODY
=============================================================================*/

body {
  font-family: Helvetica, arial, freesans, clean, sans-serif;
  font-size: 14px;
  line-height: 1.6;
  color: #333;
  background-color: #fff;
  padding: 20px;
  max-width: 960px;
  margin: 0 auto;
}

body>*:first-child {
  margin-top: 0 !important;
}

body>*:last-child {
  margin-bottom: 0 !important;
}

/* BLOCKS
=============================================================================*/

p, blockquote, ul, ol, dl, table, pre {
  margin: 15px 0;
}

/* HEADERS
=============================================================================*/

h1, h2, h3, h4, h5, h6 {
  margin: 20px 0 10px;
  padding: 0;
  font-weight: bold;
  -webkit-font-smoothing: antialiased;
}

h1 tt, h1 code, h2 tt, h2 code, h3 tt, h3 code, h4 tt, h4 code, h5 tt, h5 code, h6 tt, h6 code {
  font-size: inherit;
}

h1 {
  font-size: 28px;
  color: #000;
}

h2 {
  font-size: 24px;
  border-bottom: 1px solid #ccc;
  color: #000;
}

h3 {
  font-size: 18px;
}

h4 {
  font-size: 16px;
}

h5 {
  font-size: 14px;
}

h6 {
  color: #777;
  font-size: 14px;
}

body>h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h4:first-child, body>h5:first-child, body>h6:first-child {
  margin-top: 0;
  padding-top: 0;
}

a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
  margin-top: 0;
  padding-top: 0;
}

h1+p, h2+p, h3+p, h4+p, h5+p, h6+p {
  margin-top: 10px;
}

/* LINKS
=============================================================================*/

a {
  color: #4183C4;
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

/* LISTS
=============================================================================*/

ul, ol {
  padding-left: 30px;
}

ul li > :first-child, 
ol li > :first-child, 
ul li ul:first-of-type, 
ol li ol:first-of-type, 
ul li ol:first-of-type, 
ol li ul:first-of-type {
  margin-top: 0px;
}

ul ul, ul ol, ol ol, ol ul {
  margin-bottom: 0;
}

dl {
  padding: 0;
}

dl dt {
  font-size: 14px;
  font-weight: bold;
  font-style: italic;
  padding: 0;
  margin: 15px 0 5px;
}

dl dt:first-child {
  padding: 0;
}

dl dt>:first-child {
  margin-top: 0px;
}

dl dt>:last-child {
  margin-bottom: 0px;
}

dl dd {
  margin: 0 0 15px;
  padding: 0 15px;
}

dl dd>:first-child {
  margin-top: 0px;
}

dl dd>:last-child {
  margin-bottom: 0px;
}

/* CODE
=============================================================================*/

pre, code, tt {
  font-size: 12px;
  font-family: Consolas, "Liberation Mono", Courier, monospace;
}

code, tt {
  margin: 0 0px;
  padding: 0px 0px;
  white-space: nowrap;
  border: 1px solid #eaeaea;
  background-color: #f8f8f8;
  border-radius: 3px;
}

pre>code {
  margin: 0;
  padding: 0;
  white-space: pre;
  border: none;
  background: transparent;
}

pre {
  background-color: #f8f8f8;
  border: 1px solid #ccc;
  font-size: 13px;
  line-height: 19px;
  overflow: auto;
  padding: 6px 10px;
  border-radius: 3px;
}

pre code, pre tt {
  background-color: transparent;
  border: none;
}

kbd {
    -moz-border-bottom-colors: none;
    -moz-border-left-colors: none;
    -moz-border-right-colors: none;
    -moz-border-top-colors: none;
    background-color: #DDDDDD;
    background-image: linear-gradient(#F1F1F1, #DDDDDD);
    background-repeat: repeat-x;
    border-color: #DDDDDD #CCCCCC #CCCCCC #DDDDDD;
    border-image: none;
    border-radius: 2px 2px 2px 2px;
    border-style: solid;
    border-width: 1px;
    font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
    line-height: 10px;
    padding: 1px 4px;
}

/* QUOTES
=============================================================================*/

blockquote {
  border-left: 4px solid #DDD;
  padding: 0 15px;
  color: #777;
}

blockquote>:first-child {
  margin-top: 0px;
}

blockquote>:last-child {
  margin-bottom: 0px;
}

/* HORIZONTAL RULES
=============================================================================*/

hr {
  clear: both;
  margin: 15px 0;
  height: 0px;
  overflow: hidden;
  border: none;
  background: transparent;
  border-bottom: 4px solid #ddd;
  padding: 0;
}

/* TABLES
=============================================================================*/

table th {
  font-weight: bold;
}

table th, table td {
  border: 1px solid #ccc;
  padding: 6px 13px;
}

table tr {
  border-top: 1px solid #ccc;
  background-color: #fff;
}

table tr:nth-child(2n) {
  background-color: #f8f8f8;
}

/* IMAGES
=============================================================================*/

img {
  max-width: 100%
}
</style>
</head>
<body>
<h1>Nginx安装及集群搭建</h1>
<h2>注意： 如果服务器没有安装GCC编译器的话，需要先安装GCC编译器。</h2>
<h2>使用yum安装gcc</h2>
<p>对于配备了yum的Linux发行版而言，安装gcc编译器只需要执行如下命令即可：</p>
<h3>安装gcc、c++编译器以及内核文件</h3>
<pre><code>yum -y install gcc gcc-c++ kernel-devel
</code></pre>

<p><strong>关于GCC的安装方式，还有自行安装方式，请参考CSDN文档</strong></p>
<pre><code>https://blog.csdn.net/lydong_/article/details/79812403?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158804235119724848315126%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;request_id=158804235119724848315126&amp;biz_id=0&amp;utm_source=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-2
</code></pre>

<h2>安装Nginx所需的其他依赖</h2>
<h3>(1)安装 pcre 依赖</h3>
<p>第一步：联网下载<strong>pcre</strong>压缩文件依赖</p>
<pre><code>wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
</code></pre>

<p>第二步：解压压缩文件</p>
<pre><code>tar –xvf pcre-8.37.tar.gz
</code></pre>

<p>第三步：解压之后进入<strong>pcre-8.37</strong>文件，执行:（检查编译文件）</p>
<pre><code>./configure
</code></pre>

<p>完成后，回到<strong>pcre</strong>目录下执行：（将文件进行编译并安装）</p>
<pre><code>make &amp;&amp; make install
</code></pre>

<p>安装之后，查看版本号：（出现版本号，表示安装成功）</p>
<pre><code>pcre-config --version
</code></pre>

<h3>（2）安装 openssl、zlib、gcc 依赖</h3>
<pre><code>yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
</code></pre>

<h3>（3）安装Nginx</h3>
<h2>源码安装</h2>
<p>从官方网站下载 Nginx 源码安装包(.tar.gz)</p>
<pre><code>http://nginx.org/
</code></pre>

<p>或直接用wget命令下载：</p>
<pre><code>wget http://nginx.org/download/nginx-1.12.2.tar.gz  
</code></pre>

<h4>1.解压缩Nginx安装包</h4>
<pre><code>tar -xvf nginx-1.12.2.tar.gz
</code></pre>

<h4>2.进入nginx目录，执行：</h4>
<pre><code>/configure
</code></pre>

<h4>然后执行：</h4>
<pre><code>make &amp;&amp; make install
</code></pre>

<h4>3.进入/usr/local/nginx/sbin/	下执行：(启动nginx)</h4>
<pre><code>./nginx
</code></pre>

<h4>4.IP+端口访问，会出现 Welcome to nginx! 的界面则Nginx启动安装成功。</h4>
<h2>注意：阿里云服务器要添加“安全组规则（入方向）”开放端口Nginx的默认 80 端口，否则无法访问。</h2>
<h1>Nginx 的常用命令</h1>
<p>进入 nginx  目录中</p>
<pre><code>cd /usr/local/nginx/sbin
</code></pre>

<p>1 、查看 nginx  版本号</p>
<pre><code>./nginx -v
</code></pre>

<p>2 、启动 nginx</p>
<pre><code>./nginx
</code></pre>

<p>3 、停止 nginx</p>
<pre><code>./nginx -s stop
</code></pre>

<p>4 、重新加载 nginx</p>
<pre><code>./nginx -s reload
</code></pre>

<h1>Nginx 的配置文件</h1>
<p>1 、nginx  配置文件位置：</p>
<pre><code>cd /usr/local/nginx/conf/nginx.conf
</code></pre>

<p>2 、配置文件中的内容</p>
<p>包含三部分内容</p>
<p>（1）全局块：</p>
<p>从配置文件开始到 events 块之间的内容，主要会设置一些影响 nginx 服务器整体运行的配置指令，主要包括配置运行 Nginx 服务器的用户（组）、允许生成的 worker process 数，进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。</p>
<pre><code>比如： 

    worker_processes 1; 处理并发数的配置（值越大，可以支持的并发处理数量也越多）。
</code></pre>

<p>（2）events 块：</p>
<p>events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接，常用的设置包括是否开启对多 work process下的网络连接进行序列化，是否允许同时接收多个网络连接，选取哪种事件驱动模型来处理连接请求，每个 work process </p>
<p>可以同时支持的最大连接数等。
	比如：</p>
<pre><code>worker_connections 1024;  支持的最大连接数为 1024（这部分的配置对 Nginx 的性能影响较大，在实际中应该灵活配置）。
</code></pre>

<p>（3）http 块：</p>
<p>这算是 Nginx 服务器配置中最频繁的部分，反向代理、负载均衡、动静分离、高可用、缓存和日志定义等绝大多数功能和第三方模块都在http块中进行配置。</p>
<pre><code>http 块也包括两部分： http 全局块 、 server 块。
</code></pre>

<p>3.1）http 全局块</p>
<pre><code>http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
</code></pre>

<p>3.2）server 块</p>
<pre><code>这块和虚拟主机有密切关系，虚拟主机从用户角度看，和一台独立的硬件主机是完全一样的，该技术的产生是为了节省互联网服务器硬件成本。

每个 http 块可以包括多个 server 块，而每个 server 块就相当于一个虚拟主机。

而每个 server 块也分为全局 server 块，以及可以同时包含多个 locaton 块。

1、全局 server 块

    最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。

2、location 块

    一个 server 块可以配置多个 location 块。

    这块的主要作用是基于 Nginx 服务器接收到的请求字符串（例如 server_name/uri-string），

    对虚拟主机名称（也可以是 IP 别名）之外的字符串（例如 前面的 /uri-string）进行匹配，

    7对特定的请求进行处理。地址定向、数据缓存和应答控制等功能，还有许多第三方模块的配置也在这里进行。
</code></pre>

<h1>nginx  配置实例-反向代理 1</h1>
<pre><code>在Nginx目录下的conf文件夹之下：

vim nginx.conf

server {
    listen       80;
    server_name  39.104.117.161;

    location / {
        root   html;
        proxy_pass http://127.0.0.1:8080;
        index  index.html index.htm;
    }
}
</code></pre>

<h1>nginx  配置实例-反向代理 2</h1>
<p>实现效果：使用 nginx 反向代理，根据访问的路径跳转到不同端口的服务中</p>
<p>nginx 监听端口为 80</p>
<p>访问 http://chenbn.top/jh/ 直接跳转到 127.0.0.1:8081</p>
<p>访问 http://chenbn.top/jhz/ 直接跳转到 127.0.0.1:8082</p>
<h2>代理配置</h2>
<pre><code> server {
    listen       80;
    server_name  39.104.117.161;

    location / {
        root   html;
        proxy_pass http://127.0.0.1:8080;
        index  index.html index.htm;
    }

    location ~ /jh/ {
        proxy_pass http://127.0.0.1:8081;
    }

    location ~ /jhz/ {
        proxy_pass http://127.0.0.1:8082;
    }

}
</code></pre>

<h1>Nginx 负载均衡配置</h1>
<pre><code>http{

    upstream myserver{

        server 110.110.110.110:8081;
        server 110.110.110.110:8082;
    }

    server{
        location / {
            proxy_pass http://myserver;
            proxy_connect_timeout 10;
        }
    }

}
</code></pre>

<h1>Nginx 动静分离配置</h1>
<pre><code>server {
    listen       80;
    server_name  39.104.117.161;

    location /www/ {
        root   /data/;
        index  index.html index.htm;
    }

    location /image/ {
        root   /data/;
        autoindex on;
    }

}
</code></pre>


</body>
</html>
<!-- This document was created with MarkdownPad, the Markdown editor for Windows (http://markdownpad.com) -->
